package com.xlf.service.ai.service;

import com.xlf.service.ai.pojo.dto.ChatBaseRequest;
import com.xlf.service.ai.pojo.dto.ChatResponse;

import java.util.function.Consumer;


public interface ContBot {

    /**
     * 多轮对话，有上下文记忆，默认参数
     * （非流式）
     *
     * @param content 对话内容
     * @param msgUid  对话唯一识别码
     * @return ChatResponse 响应实体类
     */
    ChatResponse chatCont(String content, String msgUid);


    /**
     * 多轮对话，有上下文记忆，支持参数配置
     * （非流式）
     *
     * @param chatRequest 请求实体类
     * @param msgUid      对话唯一识别码
     * @return ChatResponse 响应实体类
     */
    <T extends ChatBaseRequest> ChatResponse chatCont(T chatRequest, String msgUid);


    /**
     * 多轮对话，有上下文记忆，支持参数配置
     * （流式）
     *
     * @param chatRequest 请求实体类
     * @param subscription 订阅流式输出的内容
     */
    <T extends ChatBaseRequest> void chatContOfStream(T chatRequest, String msgUid,Consumer<ChatResponse> subscription);


    /**
     * 多轮对话，有上下文记忆，默认参数
     * （流式）
     *
     * @param content 对话内容
     * @param subscription 订阅流式输出的内容
     */
    <T extends ChatBaseRequest> void chatContOfStream(String content, String msgUid,Consumer<ChatResponse> subscription);


}
